package com.yeban.javase.day19.answer.test2;

import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;

/**
 * @Desc TODO
 * @Author yeban
 * @Date 2025/11/4
 */
public class ThreadPool {

    private ThreadPoolExecutor pool;

    /**
     * 创建线程池
     * @param maxPoolSize  池子中允许最大的线程数量
     * @param queueSize    阻塞队列中允许的线程数
     *
     * 执行的最多任务数 = maxPoolSize + queueSize
     */
    public ThreadPool(int maxPoolSize, int queueSize) {
        pool = new ThreadPoolExecutor(
                1,                             // corePoolSize 核心线程数
                maxPoolSize,                   // 最大线程数
                60, TimeUnit.SECONDS,          // 线程空闲存活时间
                new LinkedBlockingQueue<>(queueSize) // 任务队列
        );
    }

    // 执行方法
    public void execute(Runnable runnable) {
        pool.submit(runnable);
    }
}
